package com.kj.tms.system.service.user.dao;


import com.kj.tms.common.bean.dao.BaseMapper;
import com.kj.tms.pri.system.org.dto.OrgDto;
import com.kj.tms.pri.system.user.dto.UserOrgDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <p>项目名称：system<p>
 * <p>类名称：UserOrgMapper<p>
 * <p>类描述：用户所属机构Mapper<p>
 * @author 创建人：yangruidong
 * @author 创建时间： 2017年10月18日 9:41
 * @author 修改人：yangruidong
 * @author 修改时间：2017年10月18日 9:41
 * @author 修改备注：
 * @version: 2017年10月18日
 */
@Repository
public interface UserOrgMapper extends BaseMapper<UserOrgDto> {

    /**
     * @method      [listUserOrg]
     * @description [根据dto条件查全部]
     * @author      [yangruidong]
     * @version     1.0
     * @param
     * @return
     * @exception
     * @date
     */
    List<UserOrgDto> listUserOrg(UserOrgDto model);

    /**
     * @method      [listUserOrg]
     * @description [根据dto条件查全部]
     * @author      [yangruidong]
     * @version     1.0
     * @param
     * @return
     * @exception
     * @date
     */
    List<OrgDto> listOrgByUserId(UserOrgDto model);

    /**
     *
     * @Title: deleteByUser
     * @Description: 删除机构人员
     * @param userId     用户id
     * @param orgCode  机构编码
     * @return void 返回类型
     * @throws Exception
     */
    void deleteByUser(@Param("userId") String userId, @Param("orgCode") String orgCode);
    /**
    * @Method
    * @Param     personnelIds 人员数组   orgCode 机构编号
    * @Return
    * @Exception
    * @Description [批量删除同一机构下的选中的人员]
    * @Author      zhangsong
    * @Version     1.0
    * @Date        2017/11/17 15:21
    */
    void batchDeleteByUser(@Param("personnelIds") String[] personnelIds, @Param("orgCode") String orgCode);

    /**
     * @method      [batchDeleteOrgByUser]
     * @description [批量删除人员下的选中的机构]
     * @author      王国庆
     * @version     1.0
     * @param       orgCodes 机构数组
     * @param       userId   人员Id
     * @return
     * @exception
     * @date        2017年12月15日 15:39
     */
    void batchDeleteOrgByUser(@Param("orgCodes") String[] orgCodes, @Param("userId") String userId);


    /**
     * 增加人员机构角色
     * @param list
     */
    void batchAddUserOrg(@Param("list") List<UserOrgDto> list);


    /**
     * @method      [listOrgRoleByPage]
     * @description [加载配置机构权限分页信息]
     * @author      王国庆
     * @version     1.0
     * @param        map
     * @return
     * @exception
     * @date        2017年12月13日 11:23
     */
    List<UserOrgDto> listOrgRoleByPage(Map map);

    /**
     * @method      [getUserOrgRoleCount]
     * @description [加载配置机构权限信息数量]
     * @author      王国庆
     * @version     1.0
     * @param       map
     * @return      int
     * @exception
     * @date        2017年12月13日 11:19
     */
    int getUserOrgRoleCount(Map map);


    /**
     * @method      [listOrgByUserOrgPage]
     * @description [根据当前机构加载配置机构权限分页信息]
     * @author      王国庆
     * @version     1.0
     * @param       map
     * @return      List<UserOrgDto>
     * @exception
     * @date        2017年12月14日 15:46
     */
    List<UserOrgDto> listOrgByUserOrgPage(Map map);

    /**
     * @method      [getOrgByUserOrgCount]
     * @description [根据当前机构加载配置机构权限信息数量]
     * @author      王国庆
     * @version     1.0
     * @param       map
     * @return      int
     * @exception
     * @date        2017年12月14日 15:47
     */
    int getOrgByUserOrgCount(Map map);
}